take dsander's advice and use interpolated instead of interpolated_options

Andrew Cantino 10 years ago
parent
commit
073df69df7
36 changed files with 186 additions and 186 deletions
  1. 4 4
      app/concerns/liquid_interpolatable.rb
  2. 4 4
      app/models/agents/adioso_agent.rb
  3. 2 2
      app/models/agents/basecamp_agent.rb
  4. 6 6
      app/models/agents/data_output_agent.rb
  5. 1 1
      app/models/agents/email_agent.rb
  6. 1 1
      app/models/agents/email_digest_agent.rb
  7. 1 1
      app/models/agents/event_formatting_agent.rb
  8. 4 4
      app/models/agents/ftpsite_agent.rb
  9. 6 6
      app/models/agents/growl_agent.rb
  10. 2 2
      app/models/agents/hipchat_agent.rb
  11. 6 6
      app/models/agents/human_task_agent.rb
  12. 7 7
      app/models/agents/imap_folder_agent.rb
  13. 7 7
      app/models/agents/jabber_agent.rb
  14. 7 7
      app/models/agents/java_script_agent.rb
  15. 8 8
      app/models/agents/jira_agent.rb
  16. 10 10
      app/models/agents/mqtt_agent.rb
  17. 11 11
      app/models/agents/peak_detector_agent.rb
  18. 6 6
      app/models/agents/post_agent.rb
  19. 4 4
      app/models/agents/public_transport_agent.rb
  20. 1 1
      app/models/agents/pushbullet_agent.rb
  21. 13 13
      app/models/agents/pushover_agent.rb
  22. 2 2
      app/models/agents/sentiment_agent.rb
  23. 3 3
      app/models/agents/shell_command_agent.rb
  24. 4 4
      app/models/agents/slack_agent.rb
  25. 1 1
      app/models/agents/stubhub_agent.rb
  26. 4 4
      app/models/agents/translation_agent.rb
  27. 3 3
      app/models/agents/trigger_agent.rb
  28. 9 9
      app/models/agents/twilio_agent.rb
  29. 2 2
      app/models/agents/twitter_publish_agent.rb
  30. 5 5
      app/models/agents/twitter_stream_agent.rb
  31. 5 5
      app/models/agents/twitter_user_agent.rb
  32. 7 7
      app/models/agents/weather_agent.rb
  33. 4 4
      app/models/agents/webhook_agent.rb
  34. 22 22
      app/models/agents/website_agent.rb
  35. 2 2
      app/models/agents/weibo_publish_agent.rb
  36. 2 2
      app/models/agents/weibo_user_agent.rb

+ 4 - 4
app/concerns/liquid_interpolatable.rb

@@ -14,11 +14,11 @@ module LiquidInterpolatable
14 14
     end
15 15
   end
16 16
 
17
-  def interpolated_options(payload = {})
17
+  def interpolated(payload = {})
18 18
     key = [options, payload]
19
-    @interpolated_options_cache ||= {}
20
-    @interpolated_options_cache[key] ||= interpolate_options(options, payload)
21
-    @interpolated_options_cache[key]
19
+    @interpolated_cache ||= {}
20
+    @interpolated_cache[key] ||= interpolate_options(options, payload)
21
+    @interpolated_cache[key]
22 22
   end
23 23
 
24 24
   def interpolate_string(string, payload)

+ 4 - 4
app/models/agents/adioso_agent.rb

@@ -54,9 +54,9 @@ module Agents
54 54
     end
55 55
 
56 56
     def check
57
-      auth_options = {:basic_auth => {:username =>interpolated_options[:username], :password=>interpolated_options['password']}}
58
-      parse_response = HTTParty.get "http://api.adioso.com/v2/search/parse?q=#{URI.encode(interpolated_options['from'])}+to+#{URI.encode(interpolated_options['to'])}", auth_options
59
-      fare_request = parse_response["search_url"].gsub /(end=)(\d*)([^\d]*)(\d*)/, "\\1#{date_to_unix_epoch(interpolated_options['end_date'])}\\3#{date_to_unix_epoch(interpolated_options['start_date'])}"
57
+      auth_options = {:basic_auth => {:username =>interpolated[:username], :password=>interpolated['password']}}
58
+      parse_response = HTTParty.get "http://api.adioso.com/v2/search/parse?q=#{URI.encode(interpolated['from'])}+to+#{URI.encode(interpolated['to'])}", auth_options
59
+      fare_request = parse_response["search_url"].gsub /(end=)(\d*)([^\d]*)(\d*)/, "\\1#{date_to_unix_epoch(interpolated['end_date'])}\\3#{date_to_unix_epoch(interpolated['start_date'])}"
60 60
       fare = HTTParty.get fare_request, auth_options
61 61
 
62 62
 			if fare["warnings"]
@@ -64,7 +64,7 @@ module Agents
64 64
 			else
65 65
 				event = fare["results"].min {|a,b| a["cost"] <=> b["cost"]}
66 66
 				event["date"]  = Time.at(event["date"]).to_date.httpdate[0..15]
67
-				event["route"] = "#{interpolated_options['from']} to #{interpolated_options['to']}"
67
+				event["route"] = "#{interpolated['from']} to #{interpolated['to']}"
68 68
 				create_event :payload => event
69 69
 			end
70 70
     end

+ 2 - 2
app/models/agents/basecamp_agent.rb

@@ -76,11 +76,11 @@ module Agents
76 76
 
77 77
   private
78 78
     def request_url
79
-      "https://basecamp.com/#{URI.encode(interpolated_options[:user_id].to_s)}/api/v1/projects/#{URI.encode(interpolated_options[:project_id].to_s)}/events.json"
79
+      "https://basecamp.com/#{URI.encode(interpolated[:user_id].to_s)}/api/v1/projects/#{URI.encode(interpolated[:project_id].to_s)}/events.json"
80 80
     end
81 81
 
82 82
     def request_options
83
-      {:basic_auth => {:username => interpolated_options[:username], :password => interpolated_options[:password]}, :headers => {"User-Agent" => "Huginn (https://github.com/cantino/huginn)"}}
83
+      {:basic_auth => {:username => interpolated[:username], :password => interpolated[:password]}, :headers => {"User-Agent" => "Huginn (https://github.com/cantino/huginn)"}}
84 84
     end
85 85
 
86 86
     def query_parameters

+ 6 - 6
app/models/agents/data_output_agent.rb

@@ -61,27 +61,27 @@ module Agents
61 61
     end
62 62
 
63 63
     def events_to_show
64
-      (interpolated_options['events_to_show'].presence || 40).to_i
64
+      (interpolated['events_to_show'].presence || 40).to_i
65 65
     end
66 66
 
67 67
     def feed_ttl
68
-      (interpolated_options['ttl'].presence || 60).to_i
68
+      (interpolated['ttl'].presence || 60).to_i
69 69
     end
70 70
 
71 71
     def feed_title
72
-      interpolated_options['template']['title'].presence || "#{name} Event Feed"
72
+      interpolated['template']['title'].presence || "#{name} Event Feed"
73 73
     end
74 74
 
75 75
     def feed_link
76
-      interpolated_options['template']['link'].presence || "https://#{ENV['DOMAIN']}"
76
+      interpolated['template']['link'].presence || "https://#{ENV['DOMAIN']}"
77 77
     end
78 78
 
79 79
     def feed_description
80
-      interpolated_options['template']['description'].presence || "A feed of Events received by the '#{name}' Huginn Agent"
80
+      interpolated['template']['description'].presence || "A feed of Events received by the '#{name}' Huginn Agent"
81 81
     end
82 82
 
83 83
     def receive_web_request(params, method, format)
84
-      if interpolated_options['secrets'].include?(params['secret'])
84
+      if interpolated['secrets'].include?(params['secret'])
85 85
         items = received_events.order('id desc').limit(events_to_show).map do |event|
86 86
           interpolated = interpolate_options(options['template']['item'], event.payload)
87 87
           interpolated['guid'] = event.id

+ 1 - 1
app/models/agents/email_agent.rb

@@ -25,7 +25,7 @@ module Agents
25 25
     def receive(incoming_events)
26 26
       incoming_events.each do |event|
27 27
         log "Sending digest mail to #{user.email} with event #{event.id}"
28
-        SystemMailer.delay.send_message(:to => user.email, :subject => interpolated_options(event.payload)['subject'], :headline => interpolated_options(event.payload)['headline'], :groups => [present(event.payload)])
28
+        SystemMailer.delay.send_message(:to => user.email, :subject => interpolated(event.payload)['subject'], :headline => interpolated(event.payload)['headline'], :groups => [present(event.payload)])
29 29
       end
30 30
     end
31 31
   end

+ 1 - 1
app/models/agents/email_digest_agent.rb

@@ -37,7 +37,7 @@ module Agents
37 37
         ids = self.memory['events'].join(",")
38 38
         groups = self.memory['queue'].map { |payload| present(payload) }
39 39
         log "Sending digest mail to #{user.email} with events [#{ids}]"
40
-        SystemMailer.delay.send_message(:to => user.email, :subject => interpolated_options['subject'], :headline => interpolated_options['headline'], :groups => groups)
40
+        SystemMailer.delay.send_message(:to => user.email, :subject => interpolated['subject'], :headline => interpolated['headline'], :groups => groups)
41 41
         self.memory['queue'] = []
42 42
         self.memory['events'] = []
43 43
       end

+ 1 - 1
app/models/agents/event_formatting_agent.rb

@@ -105,7 +105,7 @@ module Agents
105 105
     def receive(incoming_events)
106 106
       incoming_events.each do |event|
107 107
         payload = perform_matching(event.payload)
108
-        opts = interpolated_options(payload)
108
+        opts = interpolated(payload)
109 109
         formatted_event = opts['mode'].to_s == "merge" ? event.payload.dup : {}
110 110
         formatted_event.merge! opts['instructions']
111 111
         formatted_event['agent'] = Agent.find(event.agent_id).type.slice!(8..-1) unless opts['skip_agent'].to_s == "true"

+ 4 - 4
app/models/agents/ftpsite_agent.rb

@@ -29,7 +29,7 @@ module Agents
29 29
     MD
30 30
 
31 31
     def working?
32
-      event_created_within?(interpolated_options['expected_update_period_in_days']) && !recent_error_logs?
32
+      event_created_within?(interpolated['expected_update_period_in_days']) && !recent_error_logs?
33 33
     end
34 34
 
35 35
     def default_options
@@ -90,10 +90,10 @@ module Agents
90 90
     end
91 91
 
92 92
     def each_entry
93
-      patterns = interpolated_options['patterns']
93
+      patterns = interpolated['patterns']
94 94
 
95 95
       after =
96
-        if str = interpolated_options['after']
96
+        if str = interpolated['after']
97 97
           Time.parse(str)
98 98
         else
99 99
           Time.at(0)
@@ -174,7 +174,7 @@ module Agents
174 174
     end
175 175
 
176 176
     def base_uri
177
-      @base_uri ||= URI(interpolated_options['url'])
177
+      @base_uri ||= URI(interpolated['url'])
178 178
     end
179 179
 
180 180
     def saving_entries

+ 6 - 6
app/models/agents/growl_agent.rb

@@ -26,7 +26,7 @@ module Agents
26 26
     end
27 27
     
28 28
     def working?
29
-      last_receive_at && last_receive_at > interpolated_options['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs?
29
+      last_receive_at && last_receive_at > interpolated['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs?
30 30
     end
31 31
 
32 32
     def validate_options
@@ -36,13 +36,13 @@ module Agents
36 36
     end
37 37
     
38 38
     def register_growl
39
-      @growler = Growl.new interpolated_options['growl_server'], interpolated_options['growl_app_name'], "GNTP"
40
-      @growler.password = interpolated_options['growl_password']
41
-      @growler.add_notification interpolated_options['growl_notification_name']
39
+      @growler = Growl.new interpolated['growl_server'], interpolated['growl_app_name'], "GNTP"
40
+      @growler.password = interpolated['growl_password']
41
+      @growler.add_notification interpolated['growl_notification_name']
42 42
     end
43 43
     
44 44
     def notify_growl(subject, message)
45
-      @growler.notify(interpolated_options['growl_notification_name'], subject, message)
45
+      @growler.notify(interpolated['growl_notification_name'], subject, message)
46 46
     end
47 47
 
48 48
     def receive(incoming_events)
@@ -51,7 +51,7 @@ module Agents
51 51
         message = (event.payload['message'] || event.payload['text']).to_s
52 52
         subject = event.payload['subject'].to_s
53 53
         if message.present? && subject.present?
54
-          log "Sending Growl notification '#{subject}': '#{message}' to #{interpolated_options(event.payload)['growl_server']} with event #{event.id}"
54
+          log "Sending Growl notification '#{subject}': '#{message}' to #{interpolated(event.payload)['growl_server']} with event #{event.id}"
55 55
           notify_growl(subject,message)
56 56
         else
57 57
           log "Event #{event.id} not sent, message and subject expected"

+ 2 - 2
app/models/agents/hipchat_agent.rb

@@ -40,9 +40,9 @@ module Agents
40 40
     end
41 41
 
42 42
     def receive(incoming_events)
43
-      client = HipChat::Client.new(interpolated_options[:auth_token])
43
+      client = HipChat::Client.new(interpolated[:auth_token])
44 44
       incoming_events.each do |event|
45
-        mo = interpolated_options(event.payload)
45
+        mo = interpolated(event.payload)
46 46
         client[mo[:room_name]].send(mo[:username], mo[:message], :notify => mo[:notify].to_s == 'true' ? 1 : 0, :color => mo[:color])
47 47
       end
48 48
     end

+ 6 - 6
app/models/agents/human_task_agent.rb

@@ -202,20 +202,20 @@ module Agents
202 202
     end
203 203
 
204 204
     def working?
205
-      last_receive_at && last_receive_at > interpolated_options['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs?
205
+      last_receive_at && last_receive_at > interpolated['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs?
206 206
     end
207 207
 
208 208
     def check
209 209
       review_hits
210 210
 
211
-      if interpolated_options['trigger_on'] == "schedule" && (memory['last_schedule'] || 0) <= Time.now.to_i - interpolated_options['submission_period'].to_i * 60 * 60
211
+      if interpolated['trigger_on'] == "schedule" && (memory['last_schedule'] || 0) <= Time.now.to_i - interpolated['submission_period'].to_i * 60 * 60
212 212
         memory['last_schedule'] = Time.now.to_i
213 213
         create_basic_hit
214 214
       end
215 215
     end
216 216
 
217 217
     def receive(incoming_events)
218
-      if interpolated_options['trigger_on'] == "event"
218
+      if interpolated['trigger_on'] == "event"
219 219
         incoming_events.each do |event|
220 220
           create_basic_hit event
221 221
         end
@@ -225,11 +225,11 @@ module Agents
225 225
     protected
226 226
 
227 227
     def take_majority?
228
-      interpolated_options['combination_mode'] == "take_majority" || interpolated_options['take_majority'] == "true"
228
+      interpolated['combination_mode'] == "take_majority" || interpolated['take_majority'] == "true"
229 229
     end
230 230
 
231 231
     def create_poll?
232
-      interpolated_options['combination_mode'] == "poll"
232
+      interpolated['combination_mode'] == "poll"
233 233
     end
234 234
 
235 235
     def event_for_hit(hit_id)
@@ -365,7 +365,7 @@ module Agents
365 365
     end
366 366
 
367 367
     def all_questions_are_numeric?
368
-      interpolated_options['hit']['questions'].all? do |question|
368
+      interpolated['hit']['questions'].all? do |question|
369 369
         question['selections'].all? do |selection|
370 370
           selection['key'] == selection['key'].to_f.to_s || selection['key'] == selection['key'].to_i.to_s
371 371
         end

+ 7 - 7
app/models/agents/imap_folder_agent.rb

@@ -111,7 +111,7 @@ module Agents
111 111
     }
112 112
 
113 113
     def working?
114
-      event_created_within?(interpolated_options['expected_update_period_in_days']) && !recent_error_logs?
114
+      event_created_within?(interpolated['expected_update_period_in_days']) && !recent_error_logs?
115 115
     end
116 116
 
117 117
     def default_options
@@ -240,7 +240,7 @@ module Agents
240 240
         matched_part = nil
241 241
         matches = {}
242 242
 
243
-        interpolated_options['conditions'].all? { |key, value|
243
+        interpolated['conditions'].all? { |key, value|
244 244
           case key
245 245
           when 'subject'
246 246
             value.present? or next true
@@ -308,7 +308,7 @@ module Agents
308 308
           notified << mail.message_id if mail.message_id
309 309
         end
310 310
 
311
-        if interpolated_options['mark_as_read']
311
+        if interpolated['mark_as_read']
312 312
           log 'Marking as read'
313 313
           mail.mark_as_read
314 314
         end
@@ -322,14 +322,14 @@ module Agents
322 322
     end
323 323
 
324 324
     def each_unread_mail
325
-      host, port, ssl, username = interpolated_options.values_at(:host, :port, :ssl, :username)
325
+      host, port, ssl, username = interpolated.values_at(:host, :port, :ssl, :username)
326 326
 
327 327
       log "Connecting to #{host}#{':%d' % port if port}#{' via SSL' if ssl}"
328 328
       Client.open(host, Integer(port), ssl) { |imap|
329 329
         log "Logging in as #{username}"
330
-        imap.login(username, interpolated_options[:password])
330
+        imap.login(username, interpolated[:password])
331 331
 
332
-        interpolated_options['folders'].each { |folder|
332
+        interpolated['folders'].each { |folder|
333 333
           log "Selecting the folder: %s" % folder
334 334
 
335 335
           imap.select(folder)
@@ -351,7 +351,7 @@ module Agents
351 351
     end
352 352
 
353 353
     def mime_types
354
-      interpolated_options['mime_types'] || %w[text/plain text/enriched text/html]
354
+      interpolated['mime_types'] || %w[text/plain text/enriched text/html]
355 355
     end
356 356
 
357 357
     private

+ 7 - 7
app/models/agents/jabber_agent.rb

@@ -28,12 +28,12 @@ module Agents
28 28
     end
29 29
 
30 30
     def working?
31
-      last_receive_at && last_receive_at > interpolated_options['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs?
31
+      last_receive_at && last_receive_at > interpolated['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs?
32 32
     end
33 33
 
34 34
     def receive(incoming_events)
35 35
       incoming_events.each do |event|
36
-        log "Sending IM to #{interpolated_options['jabber_receiver']} with event #{event.id}"
36
+        log "Sending IM to #{interpolated['jabber_receiver']} with event #{event.id}"
37 37
         deliver body(event)
38 38
       end
39 39
     end
@@ -43,15 +43,15 @@ module Agents
43 43
     end
44 44
 
45 45
     def deliver(text)
46
-      client.send Jabber::Message::new(interpolated_options['jabber_receiver'], text).set_type(:chat)
46
+      client.send Jabber::Message::new(interpolated['jabber_receiver'], text).set_type(:chat)
47 47
     end
48 48
 
49 49
     private
50 50
 
51 51
     def client
52
-      Jabber::Client.new(Jabber::JID::new(interpolated_options['jabber_sender'])).tap do |sender|
53
-        sender.connect(interpolated_options['jabber_server'], interpolated_options['jabber_port'] || '5222')
54
-        sender.auth interpolated_options['jabber_password']
52
+      Jabber::Client.new(Jabber::JID::new(interpolated['jabber_sender'])).tap do |sender|
53
+        sender.connect(interpolated['jabber_server'], interpolated['jabber_port'] || '5222')
54
+        sender.auth interpolated['jabber_password']
55 55
       end
56 56
     end
57 57
 
@@ -60,7 +60,7 @@ module Agents
60 60
     end
61 61
 
62 62
     def body(event)
63
-      interpolated_options(event.payload)['message']
63
+      interpolated(event.payload)['message']
64 64
     end
65 65
   end
66 66
 end

+ 7 - 7
app/models/agents/java_script_agent.rb

@@ -35,12 +35,12 @@ module Agents
35 35
     def working?
36 36
       return false if recent_error_logs?
37 37
 
38
-      if interpolated_options['expected_update_period_in_days'].present?
39
-        return false unless event_created_within?(interpolated_options['expected_update_period_in_days'])
38
+      if interpolated['expected_update_period_in_days'].present?
39
+        return false unless event_created_within?(interpolated['expected_update_period_in_days'])
40 40
       end
41 41
 
42
-      if interpolated_options['expected_receive_period_in_days'].present?
43
-        return false unless last_receive_at && last_receive_at > interpolated_options['expected_receive_period_in_days'].to_i.days.ago
42
+      if interpolated['expected_receive_period_in_days'].present?
43
+        return false unless last_receive_at && last_receive_at > interpolated['expected_receive_period_in_days'].to_i.days.ago
44 44
       end
45 45
 
46 46
       true
@@ -92,7 +92,7 @@ module Agents
92 92
 
93 93
       context["doCreateEvent"] = lambda { |a, y| create_event(payload: clean_nans(JSON.parse(y))).payload.to_json }
94 94
       context["getIncomingEvents"] = lambda { |a| incoming_events.to_json }
95
-      context["getOptions"] = lambda { |a, x| interpolated_options.to_json }
95
+      context["getOptions"] = lambda { |a, x| interpolated.to_json }
96 96
       context["doLog"] = lambda { |a, x| log x }
97 97
       context["doError"] = lambda { |a, x| error x }
98 98
       context["getMemory"] = lambda do |a, x, y|
@@ -112,12 +112,12 @@ module Agents
112 112
       if cred
113 113
         credential(cred) || 'Agent.check = function() { this.error("Unable to find credential"); };'
114 114
       else
115
-        interpolated_options['code']
115
+        interpolated['code']
116 116
       end
117 117
     end
118 118
 
119 119
     def credential_referenced_by_code
120
-      interpolated_options['code'] =~ /\Acredential:(.*)\Z/ && $1
120
+      interpolated['code'] =~ /\Acredential:(.*)\Z/ && $1
121 121
     end
122 122
 
123 123
     def setup_javascript

+ 8 - 8
app/models/agents/jira_agent.rb

@@ -56,7 +56,7 @@ module Agents
56 56
     end
57 57
 
58 58
     def working?
59
-      event_created_within?(interpolated_options['expected_update_period_in_days']) && !recent_error_logs?
59
+      event_created_within?(interpolated['expected_update_period_in_days']) && !recent_error_logs?
60 60
     end
61 61
 
62 62
     def check
@@ -81,14 +81,14 @@ module Agents
81 81
 
82 82
   private
83 83
     def request_url(jql, start_at)
84
-      "#{interpolated_options[:jira_url]}/rest/api/2/search?jql=#{CGI::escape(jql)}&fields=*all&startAt=#{start_at}"
84
+      "#{interpolated[:jira_url]}/rest/api/2/search?jql=#{CGI::escape(jql)}&fields=*all&startAt=#{start_at}"
85 85
     end
86 86
 
87 87
     def request_options
88 88
       ropts = {:headers => {"User-Agent" => "Huginn (https://github.com/cantino/huginn)"}}
89 89
 
90
-      if !interpolated_options[:username].empty?
91
-        ropts = ropts.merge({:basic_auth => {:username =>interpolated_options[:username], :password=>interpolated_options[:password]}})
90
+      if !interpolated[:username].empty?
91
+        ropts = ropts.merge({:basic_auth => {:username =>interpolated[:username], :password=>interpolated[:password]}})
92 92
       end
93 93
 
94 94
       ropts
@@ -121,10 +121,10 @@ module Agents
121 121
 
122 122
       jql = ""
123 123
 
124
-      if !interpolated_options[:jql].empty? && since
125
-        jql = "(#{interpolated_options[:jql]}) and updated >= '#{since.strftime('%Y-%m-%d %H:%M')}'"
124
+      if !interpolated[:jql].empty? && since
125
+        jql = "(#{interpolated[:jql]}) and updated >= '#{since.strftime('%Y-%m-%d %H:%M')}'"
126 126
       else
127
-        jql = interpolated_options[:jql] if !interpolated_options[:jql].empty?
127
+        jql = interpolated[:jql] if !interpolated[:jql].empty?
128 128
         jql = "updated >= '#{since.strftime('%Y-%m-%d %H:%M')}'" if since
129 129
       end
130 130
 
@@ -142,7 +142,7 @@ module Agents
142 142
           raise RuntimeError.new("There is no progress while fetching issues")
143 143
         end
144 144
 
145
-        if Time.now > start_time + interpolated_options['timeout'].to_i * 60
145
+        if Time.now > start_time + interpolated['timeout'].to_i * 60
146 146
           raise RuntimeError.new("Timeout exceeded while fetching issues")
147 147
         end
148 148
 

+ 10 - 10
app/models/agents/mqtt_agent.rb

@@ -74,7 +74,7 @@ module Agents
74 74
     end
75 75
 
76 76
     def working?
77
-      event_created_within?(interpolated_options['expected_update_period_in_days']) && !recent_error_logs?
77
+      event_created_within?(interpolated['expected_update_period_in_days']) && !recent_error_logs?
78 78
     end
79 79
 
80 80
     def default_options
@@ -91,13 +91,13 @@ module Agents
91 91
     end
92 92
 
93 93
     def mqtt_client
94
-      @client ||= MQTT::Client.new(interpolated_options['uri'])
94
+      @client ||= MQTT::Client.new(interpolated['uri'])
95 95
 
96
-      if interpolated_options['ssl']
97
-        @client.ssl = interpolated_options['ssl'].to_sym
98
-        @client.ca_file = interpolated_options['ca_file']
99
-        @client.cert_file = interpolated_options['cert_file']
100
-        @client.key_file = interpolated_options['key_file']
96
+      if interpolated['ssl']
97
+        @client.ssl = interpolated['ssl'].to_sym
98
+        @client.ca_file = interpolated['ca_file']
99
+        @client.cert_file = interpolated['cert_file']
100
+        @client.key_file = interpolated['key_file']
101 101
       end
102 102
 
103 103
       @client
@@ -106,7 +106,7 @@ module Agents
106 106
     def receive(incoming_events)
107 107
       mqtt_client.connect do |c|
108 108
         incoming_events.each do |event|
109
-          c.publish(interpolated_options(event.payload)['topic'], event.payload)
109
+          c.publish(interpolated(event.payload)['topic'], event.payload)
110 110
         end
111 111
 
112 112
         c.disconnect
@@ -117,8 +117,8 @@ module Agents
117 117
     def check
118 118
       mqtt_client.connect do |c|
119 119
 
120
-        Timeout::timeout((interpolated_options['max_read_time'].presence || 15).to_i) {
121
-          c.get(interpolated_options['topic']) do |topic, message|
120
+        Timeout::timeout((interpolated['max_read_time'].presence || 15).to_i) {
121
+          c.get(interpolated['topic']) do |topic, message|
122 122
 
123 123
             # A lot of services generate JSON. Try that first
124 124
             payload = JSON.parse(message) rescue message

+ 11 - 11
app/models/agents/peak_detector_agent.rb

@@ -43,7 +43,7 @@ module Agents
43 43
     end
44 44
 
45 45
     def working?
46
-      last_receive_at && last_receive_at > interpolated_options['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs?
46
+      last_receive_at && last_receive_at > interpolated['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs?
47 47
     end
48 48
 
49 49
     def receive(incoming_events)
@@ -67,7 +67,7 @@ module Agents
67 67
         if newest_value > average_value + std_multiple * standard_deviation
68 68
           memory['peaks'][group] << newest_time
69 69
           memory['peaks'][group].reject! { |p| p <= newest_time - window_duration }
70
-          create_event :payload => { 'message' => interpolated_options(event.payload)['message'], 'peak' => newest_value, 'peak_time' => newest_time, 'grouped_by' => group.to_s }
70
+          create_event :payload => { 'message' => interpolated(event.payload)['message'], 'peak' => newest_value, 'peak_time' => newest_time, 'grouped_by' => group.to_s }
71 71
         end
72 72
       end
73 73
     end
@@ -92,33 +92,33 @@ module Agents
92 92
     end
93 93
 
94 94
     def window_duration
95
-      if interpolated_options['window_duration'].present? # The older option
96
-        interpolated_options['window_duration'].to_i
95
+      if interpolated['window_duration'].present? # The older option
96
+        interpolated['window_duration'].to_i
97 97
       else
98
-        (interpolated_options['window_duration_in_days'] || 14).to_f.days
98
+        (interpolated['window_duration_in_days'] || 14).to_f.days
99 99
       end
100 100
     end
101 101
 
102 102
     def std_multiple
103
-      (interpolated_options['std_multiple'] || 3).to_f
103
+      (interpolated['std_multiple'] || 3).to_f
104 104
     end
105 105
 
106 106
     def peak_spacing
107
-      if interpolated_options['peak_spacing'].present? # The older option
108
-        interpolated_options['peak_spacing'].to_i
107
+      if interpolated['peak_spacing'].present? # The older option
108
+        interpolated['peak_spacing'].to_i
109 109
       else
110
-        (interpolated_options['min_peak_spacing_in_days'] || 2).to_f.days
110
+        (interpolated['min_peak_spacing_in_days'] || 2).to_f.days
111 111
       end
112 112
     end
113 113
 
114 114
     def group_for(event)
115
-      ((interpolated_options['group_by_path'].present? && Utils.value_at(event.payload, interpolated_options['group_by_path'])) || 'no_group')
115
+      ((interpolated['group_by_path'].present? && Utils.value_at(event.payload, interpolated['group_by_path'])) || 'no_group')
116 116
     end
117 117
 
118 118
     def remember(group, event)
119 119
       memory['data'] ||= {}
120 120
       memory['data'][group] ||= []
121
-      memory['data'][group] << [ Utils.value_at(event.payload, interpolated_options['value_path']), event.created_at.to_i ]
121
+      memory['data'][group] << [ Utils.value_at(event.payload, interpolated['value_path']), event.created_at.to_i ]
122 122
       cleanup group
123 123
     end
124 124
 

+ 6 - 6
app/models/agents/post_agent.rb

@@ -27,15 +27,15 @@ module Agents
27 27
     end
28 28
 
29 29
     def working?
30
-      last_receive_at && last_receive_at > interpolated_options['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs?
30
+      last_receive_at && last_receive_at > interpolated['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs?
31 31
     end
32 32
 
33 33
     def method
34
-      (interpolated_options['method'].presence || 'post').to_s.downcase
34
+      (interpolated['method'].presence || 'post').to_s.downcase
35 35
     end
36 36
 
37 37
     def headers
38
-      interpolated_options['headers'].presence || {}
38
+      interpolated['headers'].presence || {}
39 39
     end
40 40
 
41 41
     def validate_options
@@ -58,16 +58,16 @@ module Agents
58 58
 
59 59
     def receive(incoming_events)
60 60
       incoming_events.each do |event|
61
-        handle (interpolated_options(event.payload)['payload'].presence || {}).merge(event.payload)
61
+        handle (interpolated(event.payload)['payload'].presence || {}).merge(event.payload)
62 62
       end
63 63
     end
64 64
 
65 65
     def check
66
-      handle interpolated_options['payload'].presence || {}
66
+      handle interpolated['payload'].presence || {}
67 67
     end
68 68
 
69 69
     def generate_uri(params = nil)
70
-      uri = URI interpolated_options[:post_url]
70
+      uri = URI interpolated[:post_url]
71 71
       uri.query = URI.encode_www_form(Hash[URI.decode_www_form(uri.query || '')].merge(params)) if params
72 72
       uri
73 73
     end

+ 4 - 4
app/models/agents/public_transport_agent.rb

@@ -48,12 +48,12 @@ module Agents
48 48
     MD
49 49
 
50 50
     def check_url
51
-      stop_query = URI.encode(interpolated_options["stops"].collect{|a| "&stops=#{a}"}.join)
52
-      "http://webservices.nextbus.com/service/publicXMLFeed?command=predictionsForMultiStops&a=#{interpolated_options["agency"]}#{stop_query}"
51
+      stop_query = URI.encode(interpolated["stops"].collect{|a| "&stops=#{a}"}.join)
52
+      "http://webservices.nextbus.com/service/publicXMLFeed?command=predictionsForMultiStops&a=#{interpolated["agency"]}#{stop_query}"
53 53
     end
54 54
 
55 55
     def stops
56
-      interpolated_options["stops"].collect{|a| a.split("|").last}
56
+      interpolated["stops"].collect{|a| a.split("|").last}
57 57
     end
58 58
 
59 59
     def check
@@ -65,7 +65,7 @@ module Agents
65 65
         predictions.each do |pr|
66 66
           parent = pr.parent.parent
67 67
           vals = {"routeTitle" => parent["routeTitle"], "stopTag" => parent["stopTag"]}
68
-          if pr["minutes"] && pr["minutes"].to_i < interpolated_options["alert_window_in_minutes"].to_i
68
+          if pr["minutes"] && pr["minutes"].to_i < interpolated["alert_window_in_minutes"].to_i
69 69
             vals = vals.merge Hash.from_xml(pr.to_xml)
70 70
             if not_already_in_memory?(vals)
71 71
               create_event(:payload => vals)

+ 1 - 1
app/models/agents/pushbullet_agent.rb

@@ -49,7 +49,7 @@ module Agents
49 49
     private
50 50
 
51 51
     def query_options(event)
52
-      mo = interpolated_options(event.payload)
52
+      mo = interpolated(event.payload)
53 53
       {
54 54
         :basic_auth => {:username => mo[:api_key], :password => ''},
55 55
         :body => {:device_iden => mo[:device_id], :title => mo[:title], :body => mo[:body], :type => 'note'}

+ 13 - 13
app/models/agents/pushover_agent.rb

@@ -58,37 +58,37 @@ module Agents
58 58
 
59 59
     def receive(incoming_events)
60 60
       incoming_events.each do |event|
61
-        payload_interpolated_options = interpolated_options(event.payload)
62
-        message = (event.payload['message'].presence || event.payload['text'].presence || payload_interpolated_options['message']).to_s
61
+        payload_interpolated = interpolated(event.payload)
62
+        message = (event.payload['message'].presence || event.payload['text'].presence || payload_interpolated['message']).to_s
63 63
         if message.present?
64 64
           post_params = {
65
-            'token' => payload_interpolated_options['token'],
66
-            'user' => payload_interpolated_options['user'],
65
+            'token' => payload_interpolated['token'],
66
+            'user' => payload_interpolated['user'],
67 67
             'message' => message
68 68
           }
69 69
 
70
-          post_params['device'] = event.payload['device'].presence || payload_interpolated_options['device']
71
-          post_params['title'] = event.payload['title'].presence || event.payload['subject'].presence || payload_interpolated_options['title']
70
+          post_params['device'] = event.payload['device'].presence || payload_interpolated['device']
71
+          post_params['title'] = event.payload['title'].presence || event.payload['subject'].presence || payload_interpolated['title']
72 72
 
73
-          url = (event.payload['url'].presence || payload_interpolated_options['url'] || '').to_s
73
+          url = (event.payload['url'].presence || payload_interpolated['url'] || '').to_s
74 74
           url = url.slice 0..512
75 75
           post_params['url'] = url
76 76
 
77
-          url_title = (event.payload['url_title'].presence || payload_interpolated_options['url_title']).to_s
77
+          url_title = (event.payload['url_title'].presence || payload_interpolated['url_title']).to_s
78 78
           url_title = url_title.slice 0..100
79 79
           post_params['url_title'] = url_title
80 80
 
81
-          post_params['priority'] = (event.payload['priority'].presence || payload_interpolated_options['priority']).to_i
81
+          post_params['priority'] = (event.payload['priority'].presence || payload_interpolated['priority']).to_i
82 82
 
83 83
           if event.payload.has_key? 'timestamp'
84 84
             post_params['timestamp'] = (event.payload['timestamp']).to_s
85 85
           end
86 86
 
87
-          post_params['sound'] = (event.payload['sound'].presence || payload_interpolated_options['sound']).to_s
87
+          post_params['sound'] = (event.payload['sound'].presence || payload_interpolated['sound']).to_s
88 88
 
89
-          post_params['retry'] = (event.payload['retry'].presence || payload_interpolated_options['retry']).to_i
89
+          post_params['retry'] = (event.payload['retry'].presence || payload_interpolated['retry']).to_i
90 90
 
91
-          post_params['expire'] = (event.payload['expire'].presence || payload_interpolated_options['expire']).to_i
91
+          post_params['expire'] = (event.payload['expire'].presence || payload_interpolated['expire']).to_i
92 92
 
93 93
           send_notification(post_params)
94 94
         end
@@ -96,7 +96,7 @@ module Agents
96 96
     end
97 97
 
98 98
     def working?
99
-      last_receive_at && last_receive_at > interpolated_options['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs?
99
+      last_receive_at && last_receive_at > interpolated['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs?
100 100
     end
101 101
 
102 102
     def send_notification(post_params)

+ 2 - 2
app/models/agents/sentiment_agent.rb

@@ -34,13 +34,13 @@ module Agents
34 34
     end
35 35
 
36 36
     def working?
37
-      last_receive_at && last_receive_at > interpolated_options['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs?
37
+      last_receive_at && last_receive_at > interpolated['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs?
38 38
     end
39 39
 
40 40
     def receive(incoming_events)
41 41
       anew = self.class.sentiment_hash
42 42
       incoming_events.each do |event|
43
-        Utils.values_at(event.payload, interpolated_options['content']).each do |content|
43
+        Utils.values_at(event.payload, interpolated['content']).each do |content|
44 44
           sent_values = sentiment_values anew, content
45 45
           create_event :payload => { 'content' => content,
46 46
                                      'valence' => sent_values[0],

+ 3 - 3
app/models/agents/shell_command_agent.rb

@@ -56,17 +56,17 @@ module Agents
56 56
     end
57 57
 
58 58
     def working?
59
-      Agents::ShellCommandAgent.should_run? && event_created_within?(interpolated_options['expected_update_period_in_days']) && !recent_error_logs?
59
+      Agents::ShellCommandAgent.should_run? && event_created_within?(interpolated['expected_update_period_in_days']) && !recent_error_logs?
60 60
     end
61 61
 
62 62
     def receive(incoming_events)
63 63
       incoming_events.each do |event|
64
-        handle(interpolated_options(event.payload), event)
64
+        handle(interpolated(event.payload), event)
65 65
       end
66 66
     end
67 67
 
68 68
     def check
69
-      handle(interpolated_options)
69
+      handle(interpolated)
70 70
     end
71 71
 
72 72
     private

+ 4 - 4
app/models/agents/slack_agent.rb

@@ -44,20 +44,20 @@ module Agents
44 44
     end
45 45
 
46 46
     def webhook
47
-      interpolated_options[:webhook].presence || DEFAULT_WEBHOOK
47
+      interpolated[:webhook].presence || DEFAULT_WEBHOOK
48 48
     end
49 49
 
50 50
     def username
51
-      interpolated_options[:username].presence || DEFAULT_USERNAME
51
+      interpolated[:username].presence || DEFAULT_USERNAME
52 52
     end
53 53
 
54 54
     def slack_notifier
55
-      @slack_notifier ||= Slack::Notifier.new(interpolated_options[:team_name], interpolated_options[:auth_token], webhook, username: username)
55
+      @slack_notifier ||= Slack::Notifier.new(interpolated[:team_name], interpolated[:auth_token], webhook, username: username)
56 56
     end
57 57
 
58 58
     def receive(incoming_events)
59 59
       incoming_events.each do |event|
60
-        opts = interpolated_options(event.payload)
60
+        opts = interpolated(event.payload)
61 61
         slack_notifier.ping opts[:message], channel: opts[:channel], username: opts[:username]
62 62
       end
63 63
     end

+ 1 - 1
app/models/agents/stubhub_agent.rb

@@ -35,7 +35,7 @@ module Agents
35 35
     end
36 36
 
37 37
     def url
38
-      interpolated_options['url']
38
+      interpolated['url']
39 39
     end
40 40
 
41 41
     def check

+ 4 - 4
app/models/agents/translation_agent.rb

@@ -28,7 +28,7 @@ module Agents
28 28
     end
29 29
 
30 30
     def working?
31
-      last_receive_at && last_receive_at > interpolated_options['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs?
31
+      last_receive_at && last_receive_at > interpolated['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs?
32 32
     end
33 33
 
34 34
     def translate(text, to, access_token)
@@ -59,14 +59,14 @@ module Agents
59 59
 
60 60
     def receive(incoming_events)
61 61
       auth_uri = URI "https://datamarket.accesscontrol.windows.net/v2/OAuth2-13"
62
-      response = postform auth_uri, :client_id => interpolated_options['client_id'],
63
-                                    :client_secret => interpolated_options['client_secret'],
62
+      response = postform auth_uri, :client_id => interpolated['client_id'],
63
+                                    :client_secret => interpolated['client_secret'],
64 64
                                     :scope => "http://api.microsofttranslator.com",
65 65
                                     :grant_type => "client_credentials"
66 66
       access_token = JSON.parse(response.body)["access_token"]
67 67
       incoming_events.each do |event|
68 68
         translated_event = {}
69
-        opts = interpolated_options(event.payload)
69
+        opts = interpolated(event.payload)
70 70
         opts['content'].each_pair do |key, value|
71 71
           translated_event[key] = translate(value.first, opts['to'], access_token)
72 72
         end

+ 3 - 3
app/models/agents/trigger_agent.rb

@@ -51,13 +51,13 @@ module Agents
51 51
     end
52 52
 
53 53
     def working?
54
-      last_receive_at && last_receive_at > interpolated_options['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs?
54
+      last_receive_at && last_receive_at > interpolated['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs?
55 55
     end
56 56
 
57 57
     def receive(incoming_events)
58 58
       incoming_events.each do |event|
59 59
 
60
-        opts = interpolated_options(event.payload)
60
+        opts = interpolated(event.payload)
61 61
 
62 62
         match = opts['rules'].all? do |rule|
63 63
           value_at_path = Utils.value_at(event['payload'], rule['path'])
@@ -102,7 +102,7 @@ module Agents
102 102
     end
103 103
 
104 104
     def keep_event?
105
-      interpolated_options['keep_event'] == 'true'
105
+      interpolated['keep_event'] == 'true'
106 106
     end
107 107
   end
108 108
 end

+ 9 - 9
app/models/agents/twilio_agent.rb

@@ -39,18 +39,18 @@ module Agents
39 39
     end
40 40
 
41 41
     def receive(incoming_events)
42
-      @client = Twilio::REST::Client.new interpolated_options['account_sid'], interpolated_options['auth_token']
42
+      @client = Twilio::REST::Client.new interpolated['account_sid'], interpolated['auth_token']
43 43
       memory['pending_calls'] ||= {}
44 44
       incoming_events.each do |event|
45 45
         message = (event.payload['message'].presence || event.payload['text'].presence || event.payload['sms'].presence).to_s
46 46
         if message.present?
47
-          if interpolated_options(event.payload)['receive_call'].to_s == 'true'
47
+          if interpolated(event.payload)['receive_call'].to_s == 'true'
48 48
             secret = SecureRandom.hex 3
49 49
             memory['pending_calls'][secret] = message
50 50
             make_call secret
51 51
           end
52 52
 
53
-          if interpolated_options(event.payload)['receive_text'].to_s == 'true'
53
+          if interpolated(event.payload)['receive_text'].to_s == 'true'
54 54
             message = message.slice 0..160
55 55
             send_message message
56 56
           end
@@ -59,19 +59,19 @@ module Agents
59 59
     end
60 60
 
61 61
     def working?
62
-      last_receive_at && last_receive_at > interpolated_options['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs?
62
+      last_receive_at && last_receive_at > interpolated['expected_receive_period_in_days'].to_i.days.ago && !recent_error_logs?
63 63
     end
64 64
 
65 65
     def send_message(message)
66
-      @client.account.sms.messages.create :from => interpolated_options['sender_cell'],
67
-                                          :to => interpolated_options['receiver_cell'],
66
+      @client.account.sms.messages.create :from => interpolated['sender_cell'],
67
+                                          :to => interpolated['receiver_cell'],
68 68
                                           :body => message
69 69
     end
70 70
 
71 71
     def make_call(secret)
72
-      @client.account.calls.create :from => interpolated_options['sender_cell'],
73
-                                   :to => interpolated_options['receiver_cell'],
74
-                                   :url => post_url(interpolated_options['server_url'], secret)
72
+      @client.account.calls.create :from => interpolated['sender_cell'],
73
+                                   :to => interpolated['receiver_cell'],
74
+                                   :url => post_url(interpolated['server_url'], secret)
75 75
     end
76 76
 
77 77
     def post_url(server_url, secret)

+ 2 - 2
app/models/agents/twitter_publish_agent.rb

@@ -25,7 +25,7 @@ module Agents
25 25
     end
26 26
 
27 27
     def working?
28
-      event_created_within?(interpolated_options['expected_update_period_in_days']) && most_recent_event && most_recent_event.payload['success'] == true && !recent_error_logs?
28
+      event_created_within?(interpolated['expected_update_period_in_days']) && most_recent_event && most_recent_event.payload['success'] == true && !recent_error_logs?
29 29
     end
30 30
 
31 31
     def default_options
@@ -41,7 +41,7 @@ module Agents
41 41
         incoming_events = incoming_events.first(20)
42 42
       end
43 43
       incoming_events.each do |event|
44
-        tweet_text = interpolated_options(event.payload)['message']
44
+        tweet_text = interpolated(event.payload)['message']
45 45
         begin
46 46
           tweet = publish_tweet tweet_text
47 47
           create_event :payload => {

+ 5 - 5
app/models/agents/twitter_stream_agent.rb

@@ -65,7 +65,7 @@ module Agents
65 65
     end
66 66
 
67 67
     def working?
68
-      event_created_within?(interpolated_options['expected_update_period_in_days']) && !recent_error_logs?
68
+      event_created_within?(interpolated['expected_update_period_in_days']) && !recent_error_logs?
69 69
     end
70 70
 
71 71
     def default_options
@@ -80,7 +80,7 @@ module Agents
80 80
       filter = lookup_filter(filter)
81 81
 
82 82
       if filter
83
-        if interpolated_options['generate'] == "counts"
83
+        if interpolated['generate'] == "counts"
84 84
           # Avoid memory pollution by reloading the Agent.
85 85
           agent = Agent.find(id)
86 86
           agent.memory['filter_counts'] ||= {}
@@ -95,7 +95,7 @@ module Agents
95 95
     end
96 96
 
97 97
     def check
98
-      if interpolated_options['generate'] == "counts" && memory['filter_counts'] && memory['filter_counts'].length > 0
98
+      if interpolated['generate'] == "counts" && memory['filter_counts'] && memory['filter_counts'].length > 0
99 99
         memory['filter_counts'].each do |filter, count|
100 100
           create_event :payload => { 'filter' => filter, 'count' => count, 'time' => Time.now.to_i }
101 101
         end
@@ -106,7 +106,7 @@ module Agents
106 106
     protected
107 107
 
108 108
     def lookup_filter(filter)
109
-      interpolated_options['filters'].each do |known_filter|
109
+      interpolated['filters'].each do |known_filter|
110 110
         if known_filter == filter
111 111
           return filter
112 112
         elsif known_filter.is_a?(Array)
@@ -119,7 +119,7 @@ module Agents
119 119
 
120 120
     def remove_unused_keys!(agent, base)
121 121
       if agent.memory[base]
122
-        (agent.memory[base].keys - agent.interpolated_options['filters'].map {|f| f.is_a?(Array) ? f.first.to_s : f.to_s }).each do |removed_key|
122
+        (agent.memory[base].keys - agent.interpolated['filters'].map {|f| f.is_a?(Array) ? f.first.to_s : f.to_s }).each do |removed_key|
123 123
           agent.memory[base].delete(removed_key)
124 124
         end
125 125
       end

+ 5 - 5
app/models/agents/twitter_user_agent.rb

@@ -51,7 +51,7 @@ module Agents
51 51
     default_schedule "every_1h"
52 52
 
53 53
     def working?
54
-      event_created_within?(interpolated_options['expected_update_period_in_days']) && !recent_error_logs?
54
+      event_created_within?(interpolated['expected_update_period_in_days']) && !recent_error_logs?
55 55
     end
56 56
 
57 57
     def default_options
@@ -76,15 +76,15 @@ module Agents
76 76
     end
77 77
 
78 78
     def starting_at
79
-      if interpolated_options[:starting_at].present?
80
-        Time.parse(interpolated_options[:starting_at]) rescue created_at
79
+      if interpolated[:starting_at].present?
80
+        Time.parse(interpolated[:starting_at]) rescue created_at
81 81
       else
82 82
         created_at
83 83
       end
84 84
     end
85 85
 
86 86
     def include_retweets?
87
-      interpolated_options[:include_retweets] != "false"
87
+      interpolated[:include_retweets] != "false"
88 88
     end
89 89
 
90 90
     def check
@@ -93,7 +93,7 @@ module Agents
93 93
       opts.merge! :since_id => since_id unless since_id.nil?
94 94
 
95 95
       # http://rdoc.info/gems/twitter/Twitter/REST/Timelines#user_timeline-instance_method
96
-      tweets = twitter.user_timeline(interpolated_options['username'], opts)
96
+      tweets = twitter.user_timeline(interpolated['username'], opts)
97 97
 
98 98
       tweets.each do |tweet|
99 99
         if tweet.created_at >= starting_at

+ 7 - 7
app/models/agents/weather_agent.rb

@@ -51,11 +51,11 @@ module Agents
51 51
     default_schedule "8pm"
52 52
 
53 53
     def working?
54
-      event_created_within?((interpolated_options['expected_update_period_in_days'].presence || 2).to_i) && !recent_error_logs?
54
+      event_created_within?((interpolated['expected_update_period_in_days'].presence || 2).to_i) && !recent_error_logs?
55 55
     end
56 56
 
57 57
     def key_setup?
58
-      interpolated_options['api_key'].present? && interpolated_options['api_key'] != "your-key"
58
+      interpolated['api_key'].present? && interpolated['api_key'] != "your-key"
59 59
     end
60 60
 
61 61
     def default_options
@@ -69,15 +69,15 @@ module Agents
69 69
     end
70 70
 
71 71
     def service
72
-      interpolated_options["service"].presence || "wunderground"
72
+      interpolated["service"].presence || "wunderground"
73 73
     end
74 74
 
75 75
     def which_day
76
-      (interpolated_options["which_day"].presence || 1).to_i
76
+      (interpolated["which_day"].presence || 1).to_i
77 77
     end
78 78
 
79 79
     def location
80
-      interpolated_options["location"].presence || interpolated_options["zipcode"]
80
+      interpolated["location"].presence || interpolated["zipcode"]
81 81
     end
82 82
 
83 83
     def validate_options
@@ -89,12 +89,12 @@ module Agents
89 89
     end
90 90
 
91 91
     def wunderground
92
-      Wunderground.new(interpolated_options['api_key']).forecast_for(location)['forecast']['simpleforecast']['forecastday'] if key_setup?
92
+      Wunderground.new(interpolated['api_key']).forecast_for(location)['forecast']['simpleforecast']['forecastday'] if key_setup?
93 93
     end
94 94
 
95 95
     def forecastio
96 96
       if key_setup?
97
-        ForecastIO.api_key = interpolated_options['api_key']
97
+        ForecastIO.api_key = interpolated['api_key']
98 98
         lat, lng = location.split(',')
99 99
         ForecastIO.forecast(lat,lng)['daily']['data']
100 100
       end

+ 4 - 4
app/models/agents/webhook_agent.rb

@@ -27,7 +27,7 @@ module Agents
27 27
     event_description do
28 28
       <<-MD
29 29
         The event payload is base on the value of the `payload_path` option,
30
-        which is set to `#{interpolated_options['payload_path']}`.
30
+        which is set to `#{interpolated['payload_path']}`.
31 31
       MD
32 32
     end
33 33
 
@@ -40,7 +40,7 @@ module Agents
40 40
     def receive_web_request(params, method, format)
41 41
       secret = params.delete('secret')
42 42
       return ["Please use POST requests only", 401] unless method == "post"
43
-      return ["Not Authorized", 401] unless secret == interpolated_options['secret']
43
+      return ["Not Authorized", 401] unless secret == interpolated['secret']
44 44
 
45 45
       create_event(:payload => payload_for(params))
46 46
 
@@ -48,7 +48,7 @@ module Agents
48 48
     end
49 49
 
50 50
     def working?
51
-      event_created_within?(interpolated_options['expected_receive_period_in_days']) && !recent_error_logs?
51
+      event_created_within?(interpolated['expected_receive_period_in_days']) && !recent_error_logs?
52 52
     end
53 53
 
54 54
     def validate_options
@@ -58,7 +58,7 @@ module Agents
58 58
     end
59 59
 
60 60
     def payload_for(params)
61
-      Utils.value_at(params, interpolated_options['payload_path']) || {}
61
+      Utils.value_at(params, interpolated['payload_path']) || {}
62 62
     end
63 63
   end
64 64
 end

+ 22 - 22
app/models/agents/website_agent.rb

@@ -55,11 +55,11 @@ module Agents
55 55
     MD
56 56
 
57 57
     event_description do
58
-      "Events will have the fields you specified.  Your options look like:\n\n    #{Utils.pretty_print interpolated_options['extract']}"
58
+      "Events will have the fields you specified.  Your options look like:\n\n    #{Utils.pretty_print interpolated['extract']}"
59 59
     end
60 60
 
61 61
     def working?
62
-      event_created_within?(interpolated_options['expected_update_period_in_days']) && !recent_error_logs?
62
+      event_created_within?(interpolated['expected_update_period_in_days']) && !recent_error_logs?
63 63
     end
64 64
 
65 65
     def default_options
@@ -125,7 +125,7 @@ module Agents
125 125
     end
126 126
 
127 127
     def check
128
-      check_url interpolated_options['url']
128
+      check_url interpolated['url']
129 129
     end
130 130
 
131 131
     def check_url(in_url)
@@ -136,7 +136,7 @@ module Agents
136 136
         response = faraday.get(url)
137 137
         if response.success?
138 138
           body = response.body
139
-          if (encoding = interpolated_options['force_encoding']).present?
139
+          if (encoding = interpolated['force_encoding']).present?
140 140
             body = body.encode(Encoding::UTF_8, encoding)
141 141
           end
142 142
           doc = parse(body)
@@ -148,7 +148,7 @@ module Agents
148 148
             end
149 149
           else
150 150
             output = {}
151
-            interpolated_options['extract'].each do |name, extraction_details|
151
+            interpolated['extract'].each do |name, extraction_details|
152 152
               if extraction_type == "json"
153 153
                 result = Utils.values_at(doc, extraction_details['path'])
154 154
                 log "Extracting #{extraction_type} at #{extraction_details['path']}: #{result}"
@@ -181,17 +181,17 @@ module Agents
181 181
               output[name] = result
182 182
             end
183 183
 
184
-            num_unique_lengths = interpolated_options['extract'].keys.map { |name| output[name].length }.uniq
184
+            num_unique_lengths = interpolated['extract'].keys.map { |name| output[name].length }.uniq
185 185
 
186 186
             if num_unique_lengths.length != 1
187
-              error "Got an uneven number of matches for #{interpolated_options['name']}: #{interpolated_options['extract'].inspect}"
187
+              error "Got an uneven number of matches for #{interpolated['name']}: #{interpolated['extract'].inspect}"
188 188
               return
189 189
             end
190 190
 
191 191
             old_events = previous_payloads num_unique_lengths.first
192 192
             num_unique_lengths.first.times do |index|
193 193
               result = {}
194
-              interpolated_options['extract'].keys.each do |name|
194
+              interpolated['extract'].keys.each do |name|
195 195
                 result[name] = output[name][index]
196 196
                 if name.to_s == 'url'
197 197
                   result[name] = (response.env[:url] + result[name]).to_s
@@ -223,11 +223,11 @@ module Agents
223 223
     # If mode is set to 'on_change', this method may return false and update an existing
224 224
     # event to expire further in the future.
225 225
     def store_payload!(old_events, result)
226
-      if !interpolated_options['mode'].present?
226
+      if !interpolated['mode'].present?
227 227
         return true
228
-      elsif interpolated_options['mode'].to_s == "all"
228
+      elsif interpolated['mode'].to_s == "all"
229 229
         return true
230
-      elsif interpolated_options['mode'].to_s == "on_change"
230
+      elsif interpolated['mode'].to_s == "on_change"
231 231
         result_json = result.to_json
232 232
         old_events.each do |old_event|
233 233
           if old_event.payload.to_json == result_json
@@ -238,12 +238,12 @@ module Agents
238 238
         end
239 239
         return true
240 240
       end
241
-      raise "Illegal options[mode]: " + interpolated_options['mode'].to_s
241
+      raise "Illegal options[mode]: " + interpolated['mode'].to_s
242 242
     end
243 243
 
244 244
     def previous_payloads(num_events)
245
-      if interpolated_options['uniqueness_look_back'].present?
246
-        look_back = interpolated_options['uniqueness_look_back'].to_i
245
+      if interpolated['uniqueness_look_back'].present?
246
+        look_back = interpolated['uniqueness_look_back'].to_i
247 247
       else
248 248
         # Larger of UNIQUENESS_FACTOR * num_events and UNIQUENESS_LOOK_BACK
249 249
         look_back = UNIQUENESS_FACTOR * num_events
@@ -251,18 +251,18 @@ module Agents
251 251
           look_back = UNIQUENESS_LOOK_BACK
252 252
         end
253 253
       end
254
-      events.order("id desc").limit(look_back) if interpolated_options['mode'].present? && interpolated_options['mode'].to_s == "on_change"
254
+      events.order("id desc").limit(look_back) if interpolated['mode'].present? && interpolated['mode'].to_s == "on_change"
255 255
     end
256 256
 
257 257
     def extract_full_json?
258
-      !interpolated_options['extract'].present? && extraction_type == "json"
258
+      !interpolated['extract'].present? && extraction_type == "json"
259 259
     end
260 260
 
261 261
     def extraction_type
262
-      (interpolated_options['type'] || begin
263
-        if interpolated_options['url'] =~ /\.(rss|xml)$/i
262
+      (interpolated['type'] || begin
263
+        if interpolated['url'] =~ /\.(rss|xml)$/i
264 264
           "xml"
265
-        elsif interpolated_options['url'] =~ /\.json$/i
265
+        elsif interpolated['url'] =~ /\.json$/i
266 266
           "json"
267 267
         else
268 268
           "html"
@@ -295,7 +295,7 @@ module Agents
295 295
       @faraday ||= Faraday.new { |builder|
296 296
         builder.headers = headers if headers.length > 0
297 297
 
298
-        if (user_agent = interpolated_options['user_agent']).present?
298
+        if (user_agent = interpolated['user_agent']).present?
299 299
           builder.headers[:user_agent] = user_agent
300 300
         end
301 301
 
@@ -318,7 +318,7 @@ module Agents
318 318
     end
319 319
 
320 320
     def basic_auth_credentials
321
-      case value = interpolated_options['basic_auth']
321
+      case value = interpolated['basic_auth']
322 322
       when nil, ''
323 323
         return nil
324 324
       when Array
@@ -330,7 +330,7 @@ module Agents
330 330
     end
331 331
 
332 332
     def headers
333
-      interpolated_options['headers'].presence || {}
333
+      interpolated['headers'].presence || {}
334 334
     end
335 335
   end
336 336
 end

+ 2 - 2
app/models/agents/weibo_publish_agent.rb

@@ -27,7 +27,7 @@ module Agents
27 27
     end
28 28
 
29 29
     def working?
30
-      event_created_within?(interpolated_options['expected_update_period_in_days']) && most_recent_event.payload['success'] == true && !recent_error_logs?
30
+      event_created_within?(interpolated['expected_update_period_in_days']) && most_recent_event.payload['success'] == true && !recent_error_logs?
31 31
     end
32 32
 
33 33
     def default_options
@@ -47,7 +47,7 @@ module Agents
47 47
         incoming_events = incoming_events.first(20)
48 48
       end
49 49
       incoming_events.each do |event|
50
-        tweet_text = Utils.value_at(event.payload, interpolated_options(event.payload)['message_path'])
50
+        tweet_text = Utils.value_at(event.payload, interpolated(event.payload)['message_path'])
51 51
         if event.agent.type == "Agents::TwitterUserAgent"
52 52
           tweet_text = unwrap_tco_urls(tweet_text, event.payload)
53 53
         end

+ 2 - 2
app/models/agents/weibo_user_agent.rb

@@ -77,7 +77,7 @@ module Agents
77 77
     end
78 78
 
79 79
     def working?
80
-      event_created_within?(interpolated_options['expected_update_period_in_days']) && !recent_error_logs?
80
+      event_created_within?(interpolated['expected_update_period_in_days']) && !recent_error_logs?
81 81
     end
82 82
 
83 83
     def default_options
@@ -92,7 +92,7 @@ module Agents
92 92
 
93 93
     def check
94 94
       since_id = memory['since_id'] || nil
95
-      opts = {:uid => interpolated_options['uid'].to_i}
95
+      opts = {:uid => interpolated['uid'].to_i}
96 96
       opts.merge! :since_id => since_id unless since_id.nil?
97 97
 
98 98
       # http://open.weibo.com/wiki/2/statuses/user_timeline/en